﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;

namespace nwrole.lib {
    [ServiceContract]
    public interface IOrchestratorCtrlContract {
        [OperationContract]
        int GetNumSupervisors();

        [OperationContract]
        SupervisorInfo[] GetRegisteredSupervisors();

        [OperationContract]
        SupervisorData[] GetSupervisors();

        /*[OperationContract]
        Result StartSupervisor(Guid supervisorId);

        [OperationContract]
        Result StopSupervisor(Guid supervisorId);*/

        [OperationContract]
        Result RestartSupervisor(Guid supervisorId);

        [OperationContract]
        Result RestartService(Guid serviceId);

        [OperationContract]
        Result StopService(Guid serviceId);

        [OperationContract]
        Result StartService(Guid serviceId);

        [OperationContract]
        ServiceInfo[] GetSupervisorServicesInfo(Guid supervisorId);

        [OperationContract]
        ServiceInfo GetServiceInfo(Guid serviceId);

        [OperationContract]
        PluginInfo[] GetServicePluginsInfo(Guid serviceId);

        [OperationContract]
        LogMessage[] GetLogForObject(Guid objectId);
    }

    public interface IOrchestratorCtrlChannel : IOrchestratorCtrlContract, IClientChannel { }
}
